//获取数据库的引用
const db = wx.cloud.database()

/*
* 查询
* @params  _collection   集合名称  String 
           _where       查询条件   Object


           page=1 pageSize=10   1-10   limit(10).skip(0)
                                11-20  limit(10).skip(10)
                                21-30  limit(10).skip(20).orderBy("_id","desc")
*/
function get({ collection, field = {}, limit = 10, skip = 0, where = {}, orderBy = { field: "addtime", sort: "desc" } }) {
  return db.collection(collection).where(where).skip(skip).limit(limit)
    .field(field)
    .orderBy(orderBy.field, orderBy.sort)
    .get()
}


/*
* 根据id查询数据库
  @params  collection 集合名称  String
           id         菜谱id    String
*/
function getById({ collection = "", id = "" }) {
  return db.collection(collection).doc(id).get()
}

// function getById({ collection = "", id = "" }) {
//   return new Promise((resovle, reject) => {
//     db.collection(collection).doc(id).get({
//       success:res=>{
//         resovle(res)
//       },
//       fail:err=>{
//         reject(err)
//       }
//     })
//   })
// }




/*
  添加记录
  @params  collection 集合名称  String
           data   添加的数据   Object
*/
function add({ collection, data }) {
  return db.collection(collection).add({
    data
  })

}

/*
*  views累加
  @params   collection  集合名称 String
            id          数据的id
            count       增加的数量
*/
function inc({ collection = "", id = "", count = 1 }) {
  return db.collection(collection).doc(id).update({
    data: {
      views: db.command.inc(count)
    }
  })
}

/*
* 根据关键字进行搜索
  @params   collection 集合名称   String
            keyword    关键字     String
*/

function search({ collection = "", keyword = "" }) {
  return db.collection(collection).where({
    name: db.RegExp({
      regexp: keyword,
      options: "i"
    })
  }).get()
}


/**
 * 删除记录
 * @params   collection  集合名称  String
 *           where        查询条件   Object
 * **/
function remove({ collection = "", where = {} }) {
  return db.collection(collection).where(where).remove()
}

/**
 * in查询
 * @params  collection  集合名称 String
 *          arr         查询条件   Array
*/
function findByIn({collection="",arr=[]}){
    return db.collection(collection).where({
      _id: db.command.in(arr)
    }).get()
}

/**
 * 执行修改
 * @param collection  集合名称 String
 *        data        修改的数据  Object
*/

function update({collection="",id="",data={}}){
  return db.collection(collection).doc(id).update({
    data:data
  })
}

export { get, add, getById, inc, search,remove,findByIn,update }